/*
 * @lc app=leetcode.cn id=20 lang=cpp
 *
 * [20] 有效的括号
 */
#include "include.h"
// @lc code=start
class Solution {
public:
    bool isValid(string s) {
        stack<char> check;
        // auto x = *(s.begin());
        for (auto& c : s){
            if (c=='(' or c=='{' or c=='['){
                check.push(c);
            }else{
                if (check.empty()){
                    return false;
                }
                char top = check.top();
                switch (c)
                {
                case ')':{
                    if (top!='('){
                        return false;
                    }
                    break;
                }
                case ']':{
                    if (top!='['){
                        return false;
                    }
                    break;
                }
                case '}':{
                    if (top!='{'){
                        return false;
                    }
                    break;
                }
                
                default:
                    break;
                }
                check.pop();
            }
        }

        if (check.empty()){
            return true;
        }else{
            return false;
        }
    }
};
// @lc code=end

